<?php
class UsersController extends Controller
{
	public $messageValidation = false;
	public $message = false;
	

	function index()
	{
	}

	function connexion()
	{
		$data = $this->request->data; //récupération des données
		$this->loadModel('User');
		$membre = $this->User->findFirst(array(
			'conditions' => array('mail' => $data->email)
			));
		$temp = '';

		if($membre)//si email trouvé 
		{
			//vérification du profil (user/temp/admin)
			if($membre->typeMembre == 'temp')
			{
				$temp = 'Votre compte n\'a pas encore été validé!';
			}
			else
			{
				//vérification du mot de passe
				$pwd = $data->pwd;
				$pwd = sha1($pwd); //haschage

				if($pwd == $membre->mdp)//mot de passe correct
				{
					$_SESSION['active'] = true; //session active
					$_SESSION['login'] = $membre->login;
					$_SESSION['id'] = $membre->idMembre;
					$_SESSION['mail'] = $membre->mail;
					$_SESSION['typeMembre'] = $membre->typeMembre;
					$_SESSION['dateInscription'] = $membre->dateInscription;
					$_SESSION['temp'] = '';
					session_write_close();
					//redirection à la connexion
					header("location: ".BASE_URL."/index");
				}
				else //mot de passe incorrect
				{
					$temp = 'Mot de passe incorrect!';
				}
			}
		}
		else //si email non trouvé
		{
			$temp = 'Cet adresse email ne correspond à aucun membre!';
		}

		//Si erreur -> message d'erreur
		if(strlen($temp) > 0)
		{
			$_SESSION['temp'] = $temp;
			session_write_close();
			header("location: ".BASE_URL."/users");
		}
	}

	function inscription($token=null)
	{
		//action du formulaire d'inscription

		$this->loadModel('User');

		if($this->request->data && $token==null ) //si données reçu en POST
		{
			$data = $this->request->data; //récupération des données

			$doublon = $this->User->findFirst(array(
			'conditions' => array('mail' => $data->email)
			));
			
			if($doublon) //si email déjà présent dans la bd
			{
				$_SESSION['tempInsc'] = "Un compte existe déjà avec l'adresse email :\r\n".$data->email;
				header("location: ".BASE_URL."/users");
			}
			else
			{
				//formulaire valide. Insertion dans la bd
				$pwd = $data->password2; //récupération du mot de passe
				$pwd = sha1($pwd); //hashage
				$token = sha1(uniqid(rand())); //token aléatoire

				
				$tab = "users (login, mdp, mail, dateInscription, typeMembre, token)";
				$insert = array($data->login, $pwd, $data->email, date('Y-m-j'),  'temp', $token);

				//$model = new Model();
				$this->User->inscriptionInsert($tab, $insert, $token);

				$this->messageValidation ="Un email vient de vous être envoy&eacute; pour finir la validation de l'inscription.";
			}
		}
		//action de la validation par mail (lien envoyé avec le token)
		elseif ($token!=null) 
		{
			//validation d'inscription

			//récupération du membre à partir du token
			$res = $this->User->findFirst(array(
			'conditions' => array('token' => $token)
			));

			if($res == false)//si token non trouvé
			{
				//si la requête ne renvoie rien -> erreur 404
				$this->e404('Page introuvable');
			}
			else //si le token correspond
			{
				//message affiché
				$login = $res->login; //récupération du login
				//var appelé dans la view
				$this->messageValidation ="Bienvenue &agrave; vous ".$login.", votre inscription est maintenant finalis&eacute;.";

				//modification du type d'utilisateur dans la bd : temp->user et modifivation token
				$this->User->valideInscription($res->idMembre);
				
								// Création d'un dossier à son nom pour stocker ses photos
				$this->loadModel('Album');
				$this->Album->enregistrePremierAlbum($res->idMembre);

				$idDernierAlbum = $this->Album->idDernierAlbum($res->idMembre);

				//echo "ID dernier album = ".$idDernierAlbum;
				if(@mkdir ("img/imgusers/".$res->idMembre,0777,true) ) {
					// Création d'un dossier pour album de base
					if(@mkdir("img/imgusers/".$res->idMembre."/".$idDernierAlbum,0777,true)){
						// Création de l'album dans la BDD
						
					}
				}
			}
		}
	}


	function motdepasseoublie()
	{
		$data = $this->request->data;
		if($data)
		{
			$this->loadModel('User');
			$membre = $this->User->findFirst(array(
					'conditions' => array('mail' => $data->email)
					));

			if(!$membre)
			{
				echo 'email non trouvé';
			}
			else
			{
				//récupération du token
				$res = $this->User->findFirst(array(
								'conditions' => array('idMembre' => $membre->idMembre)
								));

				//envoie d'un mail de modification de mot de passe
				$subject = "ImagesArray modification de mot de passe";
				$conf = Conf::$databases[$this->User->conf];

				$lien = 'http://88.166.137.233'.BASE_URL."/users/modificationmdp/".$res->token;
				$msg = "Bonjour vous avez perdu votre mot de passe.\r\nPour le modifier veuillez cliquez sur ce lien :\r\n".$lien;
				$header = 'From: contact@imagesarray.fr' . "\r\n" .'Reply-To: imagesarray@free.fr';

				//envoie du mail
				mail($membre->mail, $subject, $msg, $header);
			}
		}
	}

	//page de création d'un nouveau mot de passe (lien du mail)
	function modificationmdp($token=null)
	{
		$data = $this->request->data; //data recu en POST

		//page afficher a partir du lien de mot de passe oublié
		if ($token!=null && !$data)
		{
			//récupération du membre à partir du token
			$this->loadModel('User');
			$res = $this->User->findFirst(array(
			'conditions' => array('token' => $token)
			));

			if($res == false)//si token non trouvé
			{
				//si la requête ne renvoie rien -> erreur 404
				$this->e404('Page introuvable');
			}
			else
			{
				$this->message = $token;
			}
		}
		// à la validation du formulaire de création d'un nouveau mot de passe
		elseif($token!=null && $data)
		{
			//récupération du membre à partir du token
			$this->loadModel('User');
			$res = $this->User->findFirst(array(
			'conditions' => array('token' => $token)
			));

			if($res!= false)
			{
				//récupération et hashage du mot de passe
				$pwd = sha1($data->pwd2);

				//création d'un nouveau token
				$newtoken = sha1(uniqid(rand()));

				//insertion dans la bd du nouveau mot de passe et du nouveau token
				$sql = "UPDATE users SET token = '".$newtoken."', mdp = '".$pwd."'  WHERE idMembre = ".$res->idMembre;
				$this->User->executeSql($sql);

				//redirection 
				$this->message = "Votre nouveau mot de passe a été créée";
				header("location: ".BASE_URL."/users/m");
			}
		}
	}

	function m(){
		$this->message = 'message';
	}

	function view()
	{
		$this->loadModel('User');
		$d['user'] = $this->User->findFirst(array(
			'conditions'	=>	array('idMembre' => $_SESSION['id'])
		));
		if(empty($d['user'])){
			$this->e404('Page introuvable');
		}


		//edition du format de date
		$d['user']->dateInscription = $this->User->editDate($d['user']->dateInscription);
		// Envoi de l'objet à la vue
		$this->set($d);
	}

	/**
	* Permet de récupérer les pages pour le menu
	* cf 5' de la vidéo 4
	* pour tester les routes
	*/
	function getMenu(){
		$this->loadModel('User');
		return $this->User->find(array(
			'conditions' => array('typeMembre' => 'user')
		));
	}
}

?>